Allocation of resources in a hierarchical system may be accomplished through the use of parent nodes, each of which is coupled to a plurality of child nodes. An example of a hierarchical system is a network that distributes bandwidth resources according to the needs of child nodes through a parent node. With the widespread use of network based applications and the advent of the need to transmit larger amounts of data in different formats such as HTTP for web data and VOIP for audio data, concerns have been raised with unbalanced allocation of resources by parent nodes to child nodes in network allocation of bandwidth resources. Such unbalanced allocations occur when the greater need for certain child nodes results in the denial of resources to other child nodes by the parent node.
In a system such as a network LAN, an appliance that receives traffic from a WAN such as the Internet may be required to distribute limited resources to a variety of different application protocols. The total available resources may be viewed as a parent node. Each of the different application protocols, in the role of child nodes, are coupled to the parent node. Requests received from the child nodes are allocated resources as resources are available to both the children individually, and to the parent node as a system. In a typical system, children do not negotiate with other children to maintain fairness between different applications. The crowding out of resources decreases the service provided by the child nodes that have lower frequencies of resource requests.
One example of a network based appliance that allocates resources is an Internet traffic management device. The Internet traffic management device may be viewed a parent node and may be structured so that child nodes use Internet traffic resources for HTTP services, VOIP services, and CMB/CFIS services. In such a system, the traffic management device has a limited number of tokens representing bandwidth that is allocated to each of the child nodes according to requests during a resource allocation phase. The more resource intensive child nodes such as a VOIP server often crowd out the other child nodes resulting in poor or no service for the other child nodes.